﻿namespace Ast.Core.Pe.Definitions
{
    public interface IOptionalHeader
    {
        ushort Magic { get; }

        SmallVersion LinkerVersion { get; }

        uint SizeOfCode { get; }

        uint SizeOfInitializedData { get; }

        uint SizeOfUninitializedData { get; }

        uint AddressOfEntryPoint { get; }

        uint BaseOfCode { get; }

        long ImageBase { get; }

        uint SectionAlignment { get; }

        uint FileAlignment { get; }

        Version OperatingSystemVersion { get; }

        Version ImageVersion { get; }

        Version SubsystemVersion { get; }

        uint Win32VersionValue { get; }

        uint SizeOfImage { get; }

        uint SizeOfHeaders { get; }

        uint CheckSum { get; }

        Subsystem Subsystem { get; }

        DllCharacteristics DllCharacteristics { get; }

        long SizeOfStackReserve { get; }

        long SizeOfStackCommit { get; }

        long SizeOfHeapReserve { get; }

        long SizeOfHeapCommit { get; }

        uint LoaderFlags { get; }

        uint NumberOfRvaAndSizes { get; }

        DataDirectoryEntry[] DataDirectory { get; }
    }
}